import router from '@/router'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import store from '@/store'

// permission.js 权限拦截，主要负责路由导航守卫

// 路由前置守卫(在路由跳转之前进入回调函数，to到哪里去，from从哪里来，
// next执行完一系列判断逻辑之后必须要执行的函数，只有执行完next后，路由才能正常的跳转)
const whiteList = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  nprogress.start()// 开启进度条
  if (store.getters.token) {
    // 存在token
    if (to.path === '/login') {
      // 跳转到主页
      next('/') // 中转到主页
      // next(地址) 并没有执行后置守卫
      nprogress.done()
    } else {
      // 判断是否获取过资料
      if (!store.getters.userId) {
        await store.dispatch('user/getUserInfo')
      }
      next()// 放过
    }
  } else {
    // 没有token
    if (whiteList.includes(to.path)) {
      // 表示在白名单里面
      next()// 放过
    } else {
      next('/login') // 跳转到登录页
      nprogress.done()
    }
  }
})

// 路由后置守卫
router.afterEach(() => {
  nprogress.done()
})
